package com.naiterui.ehp.bs.doctor.service;

import java.util.List;

import com.naiterui.common.repository.page.PageVO;
import com.naiterui.ehp.bp.bo.HeaderParams;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.doctor.prodocl.ReceiveInfo;
import com.naiterui.ehp.bs.doctor.vo.BaseDrSendInfoVo;
import com.naiterui.ehp.bs.doctor.vo.BatchMessageVo;
import com.naiterui.ehp.bs.doctor.vo.PatientGroupVo;
import com.naiterui.ehp.bs.doctor.vo.SendInfoVo;

public interface IDrBatchMessageService {

    /**
     * 获取群发信息
     *
     * @return
     *
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     */
    SendInfoVo getSendInfo(Long doctorId) throws BusinessException;

    /**
     * 获取群发次数
     *
     * @return
     *
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     */
    BaseDrSendInfoVo getCountNum(Long doctorId) throws BusinessException;

    /**
     * 确认发送
     *
     * @return
     *
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     */
    void addBatchMessage(Long doctorId, String message, HeaderParams headerParams, ReceiveInfo receiveInfo) throws BusinessException;

    /**
     * 群发消息列表
     * IDrBatchMessageService.getList()
     *
     * @return
     *
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     */
    PageVO<BatchMessageVo> getList(Long doctorId, int pageNo, int pageSize) throws BusinessException;

    /**
     * 删除群发消息
     *
     * @param doctorId
     *
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     */
    void delete(Long doctorId, String messageId) throws BusinessException;

    /**
     * 消息删除任务
     *
     * @Author YongYang
     * @Date 2017年3月8日
     * @since 1.0.0
     */
    void deleteTask();

    /**
     * 获取医生分组列表
     * IDrBatchMessageService.findPatientGroupByDoctorId()
     *
     * @param doctorId
     *
     * @return
     *
     * @throws BusinessException
     * @Author YongYang
     * @Date 2017年4月11日
     * @since 1.0.0
     */
    List<PatientGroupVo> findPatientGroupByDoctorId(Long doctorId);
}
